10 POKE53280,0:POKE53281,0:PRINTCHR$(14)"[147][149][215][197][204][195][207][205][197][160][212][207]:" 20 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][174]" 30 PRINT"[221][146][216][212][210][193]-[205][207][206] 64 [149][221]" 40 PRINT"[221][146][201][206][211][212][210][213][195][212][201][207][206][211][149][221]" 50 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][189]" 60 PRINT"[193] [208]UBLIC [196]OMAIN" 70 PRINT"[205]ACHINE [204]ANGUAGE" 80 PRINT"[205]ONITOR" 90 PRINT"[208][210][197][211][211] [193][206][217] [203][197][217] [212][207] [195][207][206][212][201][206][213][197]" 100 GETW$:IFW$=""THEN100 110 POKE646,5:PRINTCHR$(14) 120 PRINT"[147][207]UTPUT TO S[146]CREEN OR P[146]RINTER: "; 130 OPEN6,0:INPUT#6,A$:CLOSE6 140 IFA$<>"S"ANDA$<>"P"THENRUN 150 IFA$="P"THENOPEN1,4,7:DV=4:FORQ=1TO6:PRINT#1:NEXT:GOTO170 160 OPEN1,3:DV=3 170 PRINT"[147]" 180 PRINT#1," [197][216][212][210][193][205][207][206][160][201][206][211][212][210][213][195][212][201][207][206][211] " 190 PRINT#1:PRINT#1:PRINT#1," [197][216][212][210][193][205][207][206] IS ONE OF THE MOST COMMON "; 200 PRINT#1,"OF THE PUBLIC DOMAIN MACHINE LANGUAGE "; 210 PRINT#1,"MONITORS AROUND. [201]T IS ONE OF THE BEST "; 220 PRINT#1,"AS WELL. [200]ERE IS A BRIEF DESCRIPTION "; 230 PRINT#1,"OF ITS FEATURES.":PRINT#1 240 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 250 IFDV=3THENGETA$:IFA$=""THEN250 260 IFDV=3THENPRINT"[147]" 270 PRINT#1,"[211]IMPLE [193]SSEMBLER" 280 PRINT#1 290 PRINT#1,".[193] 2000 [193]9 12 [204][196][193] #$12" 300 PRINT#1,".[193] 2002 9D 00 80 [211][212][193] $8000,X" 310 PRINT#1,".[193] 2005" 320 PRINT#1:PRINT#1," [201]N THE ABOVE EXAMPLE, THE USER BEGAN "; 330 PRINT#1,"ASSEMBLY AT $2000. [212]HE FIRST INSTRUC- "; 340 PRINT#1,"TION WAS LOAD ACCUMULATOR IMMEDIATE "; 350 PRINT#1,"WITH $12. [201]N THE SECOND LINE THE USER "; 360 PRINT#1,"DID NOT NEED TO TYPE THE [193] AND ADDRESS. "; 370 PRINT#1,"[212]HE SIMPLE ASSEMBLER RETYPED THE LAST "; 380 PRINT#1,"ENTERED LINE AND PROMPTS WITH THE NEXT "; 390 PRINT#1,"ADDRESS. [212]O EXIT THE ASSEMBLER, PRESS "; 400 PRINT#1,"[[210][197][212][213][210][206]] AFTER THE ADDRESS PROMPT. "; 410 PRINT#1,"[211]YNTAX IS THE SAME AS THE DISSASEMBLER "; 420 PRINT#1,"OUTPUT. [193] ':' CAN BE USED TO TERMINATE "; 430 PRINT#1,"A LINE.":PRINT#1 440 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 450 IFDV=3THENGETA$:IFA$=""THEN450 460 IFDV=3THENPRINT"[147]" 470 PRINT#1,"[195]OMPARE [205]EMORY":PRINT#1 480 PRINT#1,".[195] 1000 2000 [195]000":PRINT#1 490 PRINT#1," [195]OMPARES MEMORY FROM $1000 TO $2000 "; 500 PRINT#1,"TO MEMORY BEGINNING AT $[195]000. [195]OMPARE "; 510 PRINT#1,"WILL PRINT THE LOCATIONS OF UNEQUAL "; 520 PRINT#1,"BYTES.":PRINT#1 530 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 540 IFDV=3THENGETA$:IFA$=""THEN540 550 IFDV=3THENPRINT"[147]" 560 PRINT#1,"[196]ISSEMBLER":PRINT#1 570 PRINT#1,".[196] 2000":PRINT#1 580 PRINT#1," [196]ISASSEMBLES TO THE END OF MEMORY "; 590 PRINT#1,"STARTING AT $1000. [212]HE THREE BYTES "; 600 PRINT#1,"FOLLOWING THE ADDRESS MAY BE MODIFIED. "; 610 PRINT#1,"[213]SE THE [CRSR] KEYS TO MOVE TO AND "; 620 PRINT#1,"MODIFY THE BYTES. [200]IT [[210][197][212][213][210][206]] AND THE "; 630 PRINT#1,"BYTES IN MEMORY WILL BE CHANGED. "; 640 PRINT#1,"[197][216][212][210][193][205][207][206] WILL THEN DISSASEMBLE THAT "; 650 PRINT#1,"LINE AGAIN.":PRINT#1 660 PRINT#1,".[196] 2000 3000":PRINT#1 670 PRINT#1," [196]ISASSEMBLES FROM $2000 TO $3000.":PRINT#1 680 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 690 IFDV=3THENGETA$:IFA$=""THEN690 700 IFDV=3THENPRINT"[147]" 710 PRINT#1,"[198]ILL [205]EMORY":PRINT#1 720 PRINT#1,".[198] 1000 1100 [198][198]":PRINT#1 730 PRINT#1," [198]ILLS THE MEMORY FROM $1000 TO $1100 "; 740 PRINT#1,"WITH THE BYTE $[198][198].":PRINT#1 750 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 760 IFDV=3THENGETA$:IFA$=""THEN760 770 IFDV=3THENPRINT"[147]" 780 PRINT#1,"[199]O [210]UN":PRINT#1 790 PRINT#1,".[199]":PRINT#1 800 PRINT#1," [199]O TO THE ADDRESS IN THE [208][195] REGISTER "; 810 PRINT#1,"DISPLAY AND EXECUTE CODE. [193]LL THE "; 820 PRINT#1,"REGISTERS WILL BE REPLACED WITH THE "; 830 PRINT#1,"DISPLAYED VALUES.":PRINT#1 840 PRINT#1,".[199] 1000":PRINT#1 850 PRINT#1," [199]O TO ADDRESS $1000 AND BEGIN "; 860 PRINT#1,"RUNNING CODE.":PRINT#1 870 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 880 IFDV=3THENGETA$:IFA$=""THEN880 890 IFDV=3THENPRINT"[147]" 900 IFDV=4THENFORQ=1TO6:PRINT#1:NEXT 910 PRINT#1,"[200]UNT [205]EMORY":PRINT#1 920 PRINT#1,".[200] [195]000 [196]000 '[210][197][193][196]":PRINT#1 930 PRINT#1," [200]UNT THROUGH MEMORY FROM $[195]000 TO "; 940 PRINT#1,"$[196]000 FOR THE [193][211][195][201][201] STRING '[210][197][193][196]' AND "; 950 PRINT#1,"PRINT THE ADDRESSES WHERE IT IS FOUND. "; 960 PRINT#1,"[193] MAXIMUM OF 32 CHARACTERS MAY BE USED.":PRINT#1 970 PRINT#1,".[200] [195]000 [196]000 20 [196]2 [198][196]":PRINT#1 980 PRINT#1," [200]UNT MUMORY FROM $[195]000 TO $[196]000 FOR "; 990 PRINT#1,"THE SEQUENCE OF BYTES $20, $[196]2, $[198][196] AND "; 1000 PRINT#1,"PRINT ANY ADDRESS WHERE IT IS FOUND. [193] "; 1010 PRINT#1,"MAXIMUM OF 32 BYTES MAY BE USED. [200]UNT "; 1020 PRINT#1,"CAN BE STOPPED WITH THE [[210][213][206]/[211][212][207][208]] KEY.":PRINT#1 1030 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1040 IFDV=3THENGETA$:IFA$=""THEN1040 1050 IFDV=3THENPRINT"[147]" 1060 PRINT#1,"[201]NTEREGATE [205]EMORY":PRINT#1 1070 PRINT#1,".[201] [198]000":PRINT#1 1080 PRINT#1,".' [198]000 54 4[198] 4[198] 20 4[196] 41 4[197] 59[212][207][207] [205][193][206][217][146]" 1090 PRINT#1,".' [198]008 20 46 49 4[195] 45 [196]3 46 49 [198][201][204][197][211][198][201][146]":PRINT#1 1100 PRINT#1," [196]ISPLAYS HEX AND [193][211][195][201][201] UNTIL THE END "; 1110 PRINT#1,"OF MEMORY.":PRINT#1 1120 PRINT#1,".[201] [198]000 [198]080":PRINT#1 1130 PRINT#1," [196]ISPLAYS HEX AND [193][211][195][201][201] FROM $[198]000 TO "; 1140 PRINT#1,"$[198]080.":PRINT#1 1150 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1160 IFDV=3THENGETA$:IFA$=""THEN1160 1170 IFDV=3THENPRINT"[147]" 1180 PRINT#1,"[204]OAD":PRINT#1 1190 PRINT#1,".[204]"+CHR$(34)+"FILENAME"+CHR$(34):PRINT#1 1200 PRINT#1," [204]OADS A FILE FROM THE CASSETTE UNIT.":PRINT#1 1210 PRINT#1,".[204]"+CHR$(34)+"FILENAME"+CHR$(34)+",08":PRINT#1 1220 PRINT#1," [204]OADS A FILE FROM THE DISK DRIVE.":PRINT#1 1230 PRINT#1," [194][197][215][193][210][197]: [204]OAD WITH A FILE NAME "; 1240 PRINT#1,"BREAKS THE [201][210][209] SAVED BY THE MONITOR. "; 1250 PRINT#1,"[196]O NOT USE .[199] TO THE [208][195] REGISTER AFTER "; 1260 PRINT#1,"A LOAD WITH A FILENAME.":PRINT#1 1270 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1280 IFDV=3THENGETA$:IFA$=""THEN1280 1290 IFDV=3THENPRINT"[147]" 1300 PRINT#1,"[205]EMORY [196]ISPLAY":PRINT#1 1310 PRINT#1,".[205] 0000 0008":PRINT#1 1320 PRINT#1,".: 0000 00 01 [193]0 [194]3 4[196] 5[195] [198]6 [197]7" 1330 PRINT#1,".: 0008 28 49 8[193] 4[194] 5[195] 7[196] 0[197] 3[198]":PRINT#1 1340 PRINT#1," [196]ISPLAY MEMORY FROM $0000 TO $0008. "; 1350 PRINT#1,"[212]HE BYTES FOLLOWING THE ADDRESS MAY BE "; 1360 PRINT#1,"MODIFIED BY EDITING AND THEN PRESSING "; 1370 PRINT#1,"[[210][197][212][213][210][206]].":PRINT#1 1380 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1390 IFDV=3THENGETA$:IFA$=""THEN1390 1400 IFDV=3THENPRINT"[147]" 1410 PRINT#1,"[206]EW [204]OCATOR":PRINT#1 1420 PRINT#1,".[206] 7000 77[198][198] 6000 0400 9000":PRINT#1 1430 PRINT#1,".[206] 77[195][196] 77[198][198] 6000 0400 9000 [215]":PRINT#1 1440 PRINT#1," [212]HE FIRST LINE FIXES ALL THREE BYTE "; 1450 PRINT#1,"INSTRUCTIONS IN THE RANGE $7000 TO "; 1460 PRINT#1,"$77[198][198] BY ADDING $6000 OFFSET TO THE "; 1470 PRINT#1,"BYTES FOLLOWING THE INSTRUCTION. [206]EW "; 1480 PRINT#1,"LOCATOR WILL NOT ADJUST ANY INSTRUCTION "; 1490 PRINT#1,"OUTSIDE OF THE $0400 TO $[195]000 RANGE. "; 1500 PRINT#1,"[212]HE SECOND LINE ADJUSTS .WORD VALUES IN "; 1510 PRINT#1,"THE SAME RANGE AS THE FIRST LINE. [206]EW "; 1520 PRINT#1,"LOCATOR STOPS AND DISASSEMBLES ON ANY "; 1530 PRINT#1,"BAD OP CODE.":PRINT#1 1540 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1550 IFDV=3THENGETA$:IFA$=""THEN1550 1560 IFDV=3THENPRINT"[147]" 1570 IFDV=4THENFORQ=1TO8:PRINT#1:NEXT 1580 PRINT#1,"[210]EGISTER [196]ISPLAY":PRINT#1 1590 PRINT#1,".[210]":PRINT#1 1600 PRINT#1," [208][195] [201][210][209] [211][210] [193][195] [216][210] [217][210] [211][208]" 1610 PRINT#1,".; 0000 [197]62[197] 51 [196][197] 03 04 05":PRINT#1 1620 PRINT#1," [196]ISPLAYS THE REGISTER VALUES. [212]HE "; 1630 PRINT#1,"VALUES MAY BE CHANGED BY EDITING THEM "; 1640 PRINT#1,"AND PRESSING [[210][197][212][213][210][206]].":PRINT#1 1650 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1660 IFDV=3THENGETA$:IFA$=""THEN1660 1670 IFDV=3THENPRINT"[147]" 1680 PRINT#1,"[211]AVE":PRINT#1 1690 PRINT#1,".[211]"+CHR$(34)+"FILENAME"+CHR$(34)+",01,0800,0[195]80":PRINT#1 1700 PRINT#1," [211]AVE TO CASSETTE THE CONTENTS OF "; 1710 PRINT#1,"LOCATIONS $0800 UP TO (NOT INCLUDING) "; 1720 PRINT#1,"$0[195]80.":PRINT#1 1730 PRINT#1,".[211]"+CHR$(34)+"FILENAME"+CHR$(34)+",08,0800,0[195]80":PRINT#1 1740 PRINT#1," [211]AVE TO DISKETTE THE CONTENTS OF "; 1750 PRINT#1,"LOCATIONS $0800 UP TO (NOT INCLUDING) "; 1760 PRINT#1,"$0[195]80.":PRINT#1 1770 PRINT#1," [194][197][215][193][210][197]: [211]AVE TO TAPE WITH FILENAME "; 1780 PRINT#1,"BREAKS THE [201][210][209] SAVED BY THE MONITOR.":PRINT#1 1790 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1800 IFDV=3THENGETA$:IFA$=""THEN1800 1810 IFDV=3THENPRINT"[147]" 1820 PRINT#1,"[212]RANSFER [205]EMORY":PRINT#1 1830 PRINT#1,".[212] 1000 1100 5000":PRINT#1 1840 PRINT#1," [212]RANSFER MEMORY IN THE RANGE $1000 "; 1850 PRINT#1,"TO $1100 AND START STORING IT AT $5000.":PRINT#1 1860 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 1870 IFDV=3THENGETA$:IFA$=""THEN1870 1880 IFDV=3THENPRINT"[147]" 1890 PRINT#1,"[215]ALK [195]ODE":PRINT#1 1900 PRINT#1,".[215]":PRINT#1 1910 PRINT#1," [211]INGLE STEP STARTING AT THE ADDRESS "; 1920 PRINT#1,"IN THE [208][195].":PRINT#1 1930 PRINT#1,".[215] 1000":PRINT#1 1940 PRINT#1," [211]INGLE STEP STARTING AT $1000. [215]ALK "; 1950 PRINT#1,"WILL CAUSE A SINGLE STEP TO EXECUTE AND "; 1960 PRINT#1,"WILL DISASSEMBLE THE NEXT INSTRUCTION. "; 1970 PRINT#1,"[211]TEP SPEED MAY BE CONTROLLED WITH [<] "; 1980 PRINT#1,"FOR [211][201][206][199][204][197][160][211][212][197][208], [[210][214][211]] FOR [211][204][207][215], AND "; 1990 PRINT#1,"[[211][208][193][195][197]] FOR [198][193][211][212].":PRINT#1 2000 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 2010 IFDV=3THENGETA$:IFA$=""THEN2010 2020 IFDV=3THENPRINT"[147]" 2030 PRINT#1,"[197]XIT TO [194][193][211][201][195]":PRINT#1 2040 PRINT#1,".[216]":PRINT#1 2050 PRINT#1," [210]ETURN TO [194][193][211][201][195] READY MODE. [212]HE "; 2060 PRINT#1,"STACK VALUE SAVED WHEN ENTERED WILL BE "; 2070 PRINT#1,"RESTORED. [195]ARE SHOULD BE TAKEN THAT "; 2080 PRINT#1,"THIS VALUE IS THE SAME AS WHEN THE "; 2090 PRINT#1,"MONITOR WAS ENTERED. [193] [195][204][210] OR ANYTHING "; 2100 PRINT#1,"THAT WOULD CAUSE A [211][217][206][212][193][216] [197][210][210][207][210] IN "; 2110 PRINT#1,"[194][193][211][201][195] WILL FIX ANY STACK PROBLEMS.":PRINT#1 2120 IFDV=3THENPRINT" [208]RESS A KEY TO CONTINUE. [146]" 2130 IFDV=3THENGETA$:IFA$=""THEN2130 2140 IFDV=3THENPRINT"[147]" 2150 PRINT#1,"[208]RINTED [207]UTPUT":PRINT#1 2160 PRINT#1," [208]RINTED OUTPUT CAN BE OBTAINED FROM "; 2170 PRINT#1,"ANY [197][216][212][210][193][205][207][206] COMMAND BY TYPING A '*'. " 2180 PRINT#1 2190 PRINT#1:CLOSE1 2200 PRINT" [212]HAT CONCLUDES THE INSTRUCTIONS.[146]" 2210 PRINT"[208][210][197][211][211] [193][206][217] [203][197][217] [212][207] [195][207][206][212][201][206][213][197]" 2220 GETW$:IFW$=""THEN2220 2230 PRINTCHR$(14)"[147] [196][207] [217][207][213] [215][201][211][200] [212][207]: " 2240 PRINT"1. [210][213][206] [211][213][208][197][210] [193][201][196]" 2250 PRINT"2. [211][197][197] [196][197][212][193][201][204][197][196] [212][201][206][217] [193][201][196] [208][204][213][211]" 2260 PRINT" [201][206][211][212][210][213][195][212][201][207][206][211]" 2270 PRINT"3. [211][197][197] [211][213][208][197][210] [193][201][196] [199][197][206][197][210][193][204] [195][207][205][205][197][206][212][211] 2280 [153]"4. (null)VALVAL (null)(null)(null)VAL(null) STR$(null)(null) RIGHT$(null)(null)(null)(null)(null)LEN(null)RIGHT$(null)(null)(null)" 2290 [153]"5. (null)VALVAL (null)VALSTR$CHR$VAL RIGHT$(null)(null)(null)(null)(null)LEN(null)RIGHT$(null)(null)(null)" 2300 [153]"6. VAL(null)RIGHT$(null) (null)LEFT$VAL (null)(null)(null)CHR$(null)ATN(null)" 2310 [153]"VALNTER YOUR NUMBER OF CHOICE" 2320 [161]W$:[139]W$[178]""[167]2320 2330 [139]W$[179][177]"1"[175]W$[179][177]"2"[175]W$[179][177]"3"[175]W$[179][177]"4"[175]W$[179][177]"5"[175]W$[179][177]"6"[167]2320 2340 W[178][197](W$):[139]W[178]6[167][153]"LOADVERIFY"[199](142):[162]:[128] 2350 [139]W[178]1[167]NP$[178]"SUPER.AID.C" 2360 [139]W[178]2[167]NP$[178]"TAP.INST.D" 2370 [139]W[178]3[167]NP$[178]"S.A.COMMENTS.D" 2380 [139]W[178]4[167]NP$[178]"SUPER.DOS.INST.D" 2390 [139]W[178]5[167]NP$[178]"WEDGE.INST.D" 2400 [153]"LOADSTOPLOAD"[199](34)NP$[199](34)",8" 2410 [151]198,4:[151]631,13:[151]632,82:[151]633,213:[151]634,13 2420 [153][199](142)"VERIFY(null)LENLENLENLENLENLENLENLENLENLENLENRIGHT$" 2430 [153][199](142)"VERIFY(null)WAITPLEASE WAITVERIFY(null)" 2440 [153][199](142)"VERIFYMID$LENLENLENLENLENLENLENLENLENLENLEN(null)WAITSTOP":[128]